package com.hzqy.persistence.dao.user_center;

import com.hzqy.persistence.dao.core.PersistenceDao;
import com.hzqy.web.vo.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Repository;

import java.util.HashMap;
import java.util.List;
import java.util.Map;


@Repository
public class UserCenterDao extends PersistenceDao<PmsUserVo, Integer>{
	
	protected final Logger LOG = LoggerFactory.getLogger(getClass());
	private final String namespace = this.getNamespace();
	
	public List<UserIntegralVo> selectIntegralByServerId(String serverId) {
		Map<String,Object> map = new HashMap<String, Object>();
		map.put("serverId", serverId);
		return getSqlSession().selectList(namespace + "selectIntegralByServerId", map);
	}
	
	/**
	 * 增值业务（音乐）中，用户定购产品包当月会送积分，但要在第二个月生效，所以第二个月需要将积分状态变更为新增
	 * 
	 * 当用户为0积分时，定购了一个产品包15元，第一个月为：
	 * 当月新增为0，当期调整为150，可用积分为0
	 * 第二个月为：
	 * 当月新增为150，当期调整为0，可用积分为150
	 * @return
	 */
	public int updateIntegralAdd() {
		return getSqlSession().update(namespace + "updateIntegralAdd");
	}
	
	/**
	 * 增值业务（音乐）中，用户定购产品包当月会送积分，但要在第二个月生效，所以第二个月需要将积分状态变更为新增，第三个月变更为有效可用
	 * 
	 * 当用户为0积分时，定购了一个产品包15元，第一个月为：
	 * 当月新增为0，当期调整为150，可用积分为0
	 * 第二个月为：
	 * 当月新增为150，当期调整为0，可用积分为150
	 * @return
	 */
	public int updateIntegralAvailable() {
		return getSqlSession().update(namespace + "updateIntegralAvailable");
	}
	
	/**
	 * 查询用户账单
	 * @param userBillVo
	 * @return
	 */
	public List<UserBillVo> selectUserBillByServerId(UserBillVo userBillVo) {
		return getSqlSession().selectList(namespace+"selectUserBillByServerId",userBillVo);
	}
	
	public int selectUserBillByServerIdCounts(UserBillVo userBillVo) {
		return getSqlSession().selectOne(namespace+"selectUserBillByServerIdCounts",userBillVo);
	}
	
	public int selectUserBoxByServerIdCount(UserBoxVo userBoxVo) {
		return getSqlSession().selectOne(namespace+"selectUserBoxByServerIdCount",userBoxVo);
	}
	
	public List<CmContentVo> selectUserBoxByServerId(UserBoxVo userBoxVo) {
		return getSqlSession().selectList(namespace+"selectUserBoxByServerId",userBoxVo);
	}

	public int selectUserBoxCatalogCountByServerid(UserBoxVo userBoxVo) {
		return getSqlSession().selectOne(namespace+"selectUserBoxCatalogCountByServerid",userBoxVo);
	}

	public List<CmCatalogVo> selectUserBoxCatalogInfoByServerid(UserBoxVo userBoxVo) {
		return getSqlSession().selectList(namespace+"selectUserBoxCatalogInfoByServerid",userBoxVo);
	}
	
	public int insertUserBox(UserBoxVo userBoxVo) {
		return getSqlSession().insert(namespace+"insertUserBox",userBoxVo);
	}
	
	public int updateUserBox(UserBoxVo userBoxVo) {
		return getSqlSession().insert(namespace+"updateUserBox",userBoxVo);
	}
	
	public int deleteUserBoxById(UserBoxVo userBoxVo) {
		return getSqlSession().delete(namespace+"deleteUserBoxById",userBoxVo);
	}
	
	public int insertIntegral(UserIntegralVo userIntegralVo){
		return getSqlSession().delete(namespace+"insertIntegral",userIntegralVo);
	}
}
